package com.example.forwardmessages

import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.Service
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.IBinder
import android.util.Log

/**
 * 前台服务，用于在MIUI系统上提高应用的存活率
 */
class KeepAliveService : Service() {
    private val TAG = "KeepAliveService"
    private val CHANNEL_ID = "keep_alive_channel"
    private val NOTIFICATION_ID = 1001

    override fun onBind(intent: Intent?): IBinder? {
        return null
    }

    override fun onCreate() {
        super.onCreate()
        Log.d(TAG, "前台服务创建")
        
        // 创建通知渠道（Android 8.0+需要）
        createNotificationChannel()
        
        // 创建前台服务通知
        val notification = createNotification()
        
        // 启动前台服务
        startForeground(NOTIFICATION_ID, notification)
        
        Log.d(TAG, "前台服务已启动")
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        Log.d(TAG, "前台服务启动命令")
        
        // 在服务启动后，我们可以执行一些后台任务
        // 这里我们简单地保持服务运行
        
        // 返回START_STICKY表示服务被杀死后会尝试重启
        return START_STICKY
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d(TAG, "前台服务销毁")
        // 停止前台服务
        stopForeground(true)
    }

    /**
     * 创建通知渠道（Android 8.0+需要）
     */
    private fun createNotificationChannel() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val name = "应用保持服务"
            val descriptionText = "保持应用在后台运行"
            val importance = NotificationManager.IMPORTANCE_LOW
            val channel = NotificationChannel(CHANNEL_ID, name, importance).apply {
                description = descriptionText
                // 设置为低优先级，不会显示在状态栏
                setSound(null, null)
                enableVibration(false)
            }
            
            // 注册通知渠道
            val notificationManager: NotificationManager =
                getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            notificationManager.createNotificationChannel(channel)
        }
    }

    /**
     * 创建前台服务通知
     */
    private fun createNotification(): Notification {
        val builder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            Notification.Builder(this, CHANNEL_ID)
        } else {
            @Suppress("DEPRECATION")
            Notification.Builder(this)
        }

        // 构建通知内容
        builder
            .setContentTitle("应用正在运行")
            .setContentText("确保开机自启动功能正常工作")
            .setSmallIcon(R.mipmap.ic_launcher) // 使用应用图标
            .setPriority(Notification.PRIORITY_LOW)
            .setOngoing(true) // 设置为不可取消

        return builder.build()
    }
}